package com.app.common.utils;

import java.lang.reflect.Field;
import java.util.HashMap;
import java.util.Map;

public class MapUtils {

    /**
     * 把任意对象的字段和值转成 Map（包括私有字段）
     *
     * @param obj 任意 Java 对象
     * @return Map<String, String>，键为字段名，值为字段值
     */
    public static Map<String , String> toMap(Object obj) {
        Map<String , String> map = new HashMap<>();
        if (obj == null) {
            return map;
        }
        Class<?> clazz = obj.getClass();

        // 循环包括父类字段
        while (clazz != null && clazz != Object.class) {
            Field[] fields = clazz.getDeclaredFields();
            for (Field field : fields) {
                // 允许访问 private 字段
                field.setAccessible(true);
                try {
                    Object value = field.get(obj);
                    map.put(field.getName(), value == null ? "" : value.toString());
                } catch (IllegalAccessException e) {
                    e.printStackTrace();
                }
            }
            clazz = clazz.getSuperclass();
        }

        return map;
    }
}
